home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Tools - Objects / MacApp / MacApp 3.0a2 / CPlusIncludes / DatabaseAccess.h < prev    next >
Text File  |  1991-05-01  |  7KB  |  209 lines

  1. /************************************************************
  2.  
  3. Created: Tuesday, March 21, 1989 at 9:39 AM
  4.     DatabaseAccess.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.     Copyright Apple Computer, Inc.     1989-1991
  9.     All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13. #ifndef __DATABASEACCESS__
  14. #define __DATABASEACCESS__
  15.  
  16. #ifndef __RESOURCES__
  17. #include <Resources.h>
  18. #endif
  19.  
  20. /* OSErr error and status codes */
  21. enum {rcDBNull = -800};
  22. enum {rcDBValue = -801};
  23. enum {rcDBError = -802};
  24. enum {rcDBBadType = -803};
  25. enum {rcDBBreak = -804};
  26. enum {rcDBExec = -805};
  27. enum {rcDBBadSessID = -806};
  28. enum {rcDBBadSessNum = -807};       /* bad session number for DBGetConnInfo */
  29.  
  30. enum {rcDBBadDDEV = -808};          /* bad ddev specified on DBInit */
  31.  
  32. enum {rcDBAsyncNotSupp = -809};     /* ddev does not support async calls */
  33. enum {rcDBBadAsyncPB = -810};       /* tried to kill a bad pb */
  34.  
  35. enum {rcDBNoHandler = -811};        /* no app handler for specified data type */
  36.  
  37. enum {rcDBWrongVersion = -812};     /* incompatible versions */
  38. enum {rcDBPackNotInited = -813};    /* attempt to call other routine before InitDBPack */
  39.  
  40. /*  messages for status functions for DBStartQuery  */
  41. enum {kDBUpdateWind = 0};
  42. enum {kDBAboutToInit = 1};
  43. enum {kDBInitComplete = 2};
  44. enum {kDBSendComplete = 3};
  45. enum {kDBExecComplete = 4};
  46. enum {kDBStartQueryComplete = 5};
  47.  
  48. /*  messages for status functions for DBGetQueryResults  */
  49. enum {kDBGetItemComplete = 6};
  50. enum {kDBGetQueryResultsComplete = 7};
  51.  
  52. /* data type codes */
  53. typedef OSType DBType;
  54.  
  55. #define     typeDate        'date'
  56. #define     typeTime        'time'
  57. #define     typeTimeStamp    'tims'
  58. #define     typeChar        'TEXT'
  59. #define     typeDecimal     'deci'
  60. #define     typeMoney        'mone'
  61. #define     typeVChar        'vcha'
  62. #define     typeVBin        'vbin'
  63. #define     typeLChar        'lcha'
  64. #define     typeLBin        'lbin'
  65. #define     typeDiscard     'disc'
  66.  
  67. /* "dummy" types for DBResultsToText */
  68. #define     typeUnknown     'unkn'
  69. #define     typeColBreak    'colb'
  70. #define     typeRowBreak    'rowb'
  71.  
  72. /* pass this in to DBGetItem for any data type */
  73. #define     typeAnyType     (DBType)0
  74.  
  75. /* infinite timeout value for DBGetItem */
  76. enum {kDBWaitForever = -1};
  77.  
  78. /*  flags for DBGetItem  */
  79. enum {kDBLastColFlag = 0x0001};
  80. enum {kDBNullFlag = 0x0004};
  81.  
  82. /* structure for asynchronous parameter block */
  83. struct DBAsyncParamBlockRec {
  84.     ProcPtr     completionProc; /* pointer to completion routine */
  85.     OSErr        result;         /* result of call */
  86.     long        userRef;        /* for application's use */
  87.     long        ddevRef;        /* for ddev's use */
  88.     long        reserved;        /* for internal use */
  89. };
  90. typedef struct DBAsyncParamBlockRec DBAsyncParamBlockRec;
  91. typedef DBAsyncParamBlockRec *DBAsyncParmBlkPtr;
  92.  
  93. /* structure for resource list in QueryRecord */
  94.  
  95. struct ResListElem {
  96.     ResType     theType;        /* resource type */
  97.     short        id;             /* resource id */
  98. };
  99. typedef struct ResListElem ResListElem;
  100. typedef ResListElem *ResListPtr,**ResListHandle;
  101.  
  102. /* structure for query list in QueryRecord */
  103.  
  104. typedef Handle **QueryListHandle;    /* just handles to 'wstr' resources */
  105.  
  106. struct QueryRecord {
  107.     short            version;        /* version */
  108.     short            id;             /* id of 'qrsc' this came from */
  109.     Handle            queryProc;        /* handle to query def proc */
  110.     Str63            ddevName;        /* ddev name */
  111.     Str255            host;            /* host */
  112.     Str255            user;            /* user */
  113.     Str255            password;        /* password */
  114.     Str255            connStr;        /* connection string */
  115.     short            currQuery;        /* current query */
  116.     short            numQueries;     /* number of queries in queryList */
  117.     QueryListHandle queryList;        /* handle to list of queries */
  118.     short            numRes;         /* number of resources in resList */
  119.     ResListHandle    resList;        /* handle to list of other resources */
  120.     Handle            dataHandle;     /* data used by query def proc */
  121.     long            refCon;         /* query's reference value */
  122. };
  123. typedef QueryRecord *QueryPtr,**QueryHandle;
  124.  
  125. /* structure for column info in ResultsRecord */
  126. struct DBColInfoRecord {
  127.     short            len;
  128.     short            places;
  129.     short            flags;
  130. };
  131. typedef struct DBColInfoRecord DBColInfoRecord;
  132.  
  133. /* structure of results returned by DBGetResults */
  134. struct ResultsRecord {
  135.     short            numRows;        /* number of rows in result */
  136.     short            numCols;        /* number of columns per row */
  137.     Handle            colTypes;        /* data type array */
  138.     Handle            colData;        /* actual results */
  139.     Handle            colInfo;        /* DBColInfoRecord array */
  140. };
  141. typedef struct ResultsRecord ResultsRecord;
  142.  
  143. #ifdef __cplusplus
  144. extern "C" {
  145. #endif
  146.  
  147. pascal OSErr InitDBPack(void)
  148.     = {0x3F3C, 0x0004, 0x303C, 0x0100, 0xA82F};
  149. pascal OSErr DBInit(long& sessID, ConstStr63Param ddevName, ConstStr255Param host,
  150.     ConstStr255Param user, ConstStr255Param passwd, ConstStr255Param connStr,
  151.     DBAsyncParmBlkPtr asyncPB)
  152.     = {0x303C, 0x0E02, 0xA82F};
  153. pascal OSErr DBEnd(long sessID, DBAsyncParmBlkPtr asyncPB)
  154.     = {0x303C, 0x0403, 0xA82F};
  155. pascal OSErr DBGetConnInfo(long sessID, short sessNum, long& returnedID,
  156.     long& version, Str63& ddevName, Str255& host, Str255& user, Str255& network,
  157.     Str255& connStr, long& start, OSErr& state, DBAsyncParmBlkPtr asyncPB)
  158.     = {0x303C, 0x1704, 0xA82F};
  159. pascal OSErr DBGetSessionNum(long sessID, short& sessNum, DBAsyncParmBlkPtr asyncPB)
  160.     = {0x303C, 0x0605, 0xA82F};
  161. pascal OSErr DBSend(long sessID, char *text, short len, DBAsyncParmBlkPtr asyncPB)
  162.     = {0x303C, 0x0706, 0xA82F};
  163. pascal OSErr DBSendItem(long sessID, DBType dataType, short len, short places,
  164.     short flags, void *buffer, DBAsyncParmBlkPtr asyncPB)
  165.     = {0x303C, 0x0B07, 0xA82F};
  166. pascal OSErr DBExec(long sessID, DBAsyncParmBlkPtr asyncPB)
  167.     = {0x303C, 0x0408, 0xA82F};
  168. pascal OSErr DBState(long sessID, DBAsyncParmBlkPtr asyncPB)
  169.     = {0x303C, 0x0409, 0xA82F};
  170. pascal OSErr DBGetErr(long sessID, long& err1, long& err2, Str255& item1,
  171.     Str255& item2, Str255& errorMsg, DBAsyncParmBlkPtr asyncPB)
  172.     = {0x303C, 0x0E0A, 0xA82F};
  173. pascal OSErr DBBreak(long sessID, Boolean abort, DBAsyncParmBlkPtr asyncPB)
  174.     = {0x303C, 0x050B, 0xA82F};
  175. pascal OSErr DBGetItem(long sessID, long timeout, DBType& dataType, short& len,
  176.     short& places, short& flags, void *buffer, DBAsyncParmBlkPtr asyncPB)
  177.     = {0x303C, 0x100C, 0xA82F};
  178. pascal OSErr DBUnGetItem(long sessID, DBAsyncParmBlkPtr asyncPB)
  179.     = {0x303C, 0x040D, 0xA82F};
  180. pascal OSErr DBKill(DBAsyncParmBlkPtr asyncPB)
  181.     = {0x303C, 0x020E, 0xA82F};
  182. pascal OSErr DBGetNewQuery(short queryID, QueryHandle& query)
  183.     = {0x303C, 0x030F, 0xA82F};
  184. pascal OSErr DBDisposeQuery(QueryHandle query)
  185.     = {0x303C, 0x0210, 0xA82F};
  186. pascal OSErr DBStartQuery(long& sessID, QueryHandle query, ProcPtr statusProc, 
  187.     DBAsyncParmBlkPtr asyncPB)
  188.     = {0x303C, 0x0811, 0xA82F};
  189. pascal OSErr DBGetQueryResults(long sessID, ResultsRecord& results,
  190.     long timeout, ProcPtr statusProc, DBAsyncParmBlkPtr asyncPB)
  191.     = {0x303C, 0x0A12, 0xA82F};
  192. pascal OSErr DBResultsToText(ResultsRecord& results, Handle& theText)
  193.     = {0x303C, 0x0413, 0xA82F};
  194. pascal OSErr DBInstallResultHandler(DBType dataType, ProcPtr theHandler, 
  195.     Boolean isSysHandler)
  196.     = {0x303C, 0x0514, 0xA82F};
  197. pascal OSErr DBRemoveResultHandler(DBType dataType)
  198.     = {0x303C, 0x0215, 0xA82F};
  199. pascal OSErr DBGetResultHandler(DBType dataType, ProcPtr& theHandler, 
  200.     Boolean getSysHandler)
  201.     = {0x303C, 0x0516, 0xA82F};
  202.  
  203. #ifdef __cplusplus
  204. }
  205. #endif
  206.  
  207.  
  208. #endif
  209.